package com.ijunfu.common.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

/**
 *
 * @Title  : 
 * @Author : ijunfu <ijunfu@163.com>
 * @Date   : 2024/2/6 23:13
 * @Version: 1.0
 * @Motto  : 简洁的代码是智慧的结晶 卓越的编码是对复杂性的优雅征服
 *
 */
public class JsonUtil {

    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将 Java 对象转换为 JSON 字符串
     * @param object 需要转换的 Java 对象
     * @return JSON 格式的字符串
     * @throws JsonProcessingException 在转换过程中如果发生错误抛出此异常
     */
    public static String toJson(Object object) throws JsonProcessingException {
        return MAPPER.writeValueAsString(object);
    }

    /**
     * 将 JSON 字符串反序列化为指定类型的 Java 对象
     * @param jsonStr JSON 格式的字符串
     * @param clazz 目标Java对象的Class类型
     * @param <T> 泛型标记，用于指定返回的对象类型
     * @return 反序列化后的Java对象
     * @throws IOException 如果 JSON 解析失败，则抛出此异常
     */
    public static <T> T toObject(String jsonStr, Class<T> clazz) throws IOException {
        return MAPPER.readValue(jsonStr, clazz);
    }

}
